// 设置导航守卫对token进行拦截
// 导入router
import router from '@/router'

// 导入封装的token文件
import { getToken } from './utils/auth'

// 设置白名单不需要验证token的数组
const whiteList = ['/login','/404']
import store from './store'

import { Message } from 'element-ui'

// 导入进度条
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'

// 设置导航守卫

router.beforeEach(async (to,form,next) => {
    // 开启进度条
    NProgress.start()
    const token = getToken()
    // 进行判断是否有token
    if (token) {
        // 有token
        // 得到用户信息
        const userInfoAs = store.getters.userInfos
        if(!userInfoAs.username){
            // 不存在就发起请求获取用户信息
            await store.dispatch('user/getUserInfos')
        }
        if (to.path == '/login') {
            Message.info('登陆过了')
            // 关闭进度条
            NProgress.done()
            next('/')
        }else{
            next()
        }
    }else{
        // 没有token
        // 判断是否有白名单
        const boole = whiteList.includes(to.path)
        if(boole){
            // 存在
            next()
        }else{
            Message.info('您还没有登陆')
            next(`/login?_redirect=${to.path}`)
        }
    } 
})

// 后置守卫
router.afterEach((to,form) =>{
    NProgress.done()
})